package com.guldan.core.enums;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Silas.
 * Date: 2016/12/4
 * Time: 0:24
 */
public enum CitizenValidatingTypeEn {

    idCardFormatError(1, "身份证编码规则错误"),
    propertyIsNull(2, "%s必填信息为空"),
    identNumberUsed(3, "身份证卡号已存在，已被%s使用(%s区划)"),
    bankNumberUsed(4, "银行卡卡号已存在，已被%s使用(身份证号码%s)"),
    areaNotExists(5, "区划信息错误，不存在该区划"),
    uploadUnauthorized(6, "跨区化人员，无权导入"),
    propertyFormatError(7, "%s信息格式错误"),
    dicCodeIsNull(8, "%s，对应的字典属性不存在"),
    execlNoRecord(9, "文件为空 or 文件中无登记记录"),
    emptyField(10, "%s，必填项不能为空 或 格式不对"),
    formatError(11, "%s，格式错误"),
    formatErrorByRow(11, "第%s条人员信息记录，%s，格式错误"),
    idCardLengthError(12, "身份证长度错误"),
    emptyFieldName(12, "未找到，%s"),
    emptyFieldByName(13, "第%s条人员信息记录，%s不能为空 或 格式错误"),
    identNumberExist(14, "系统已存在该居民信息"),
    isOnlyMaster(15, "第%s条人员信息记录为户主，则与户主关系只能为‘户主’ 且 户主证件号需和身份证号一致"),
    isNotMaster(16, "第%s条人员信息记录不为户主，则与户主关系不能为‘户主’ 且 户主证件号不能和身份证号一致"),
    saveCitizenFail(17, "保存居民信息错误"),
    notAllowBlankError(18, "第%s条人员信息记录，%s，不能包含空格"),
    bankNumberUsed2(19,"已经存在，银行[%s]卡号[%s]（归属：%s，%s）"),
    notAllowBlankErrorForField(20,"%s，不能包含空格"),

    success(99, "成功"),
    unknow(-1, "未知");

    private Integer code;
    private String mean;

    CitizenValidatingTypeEn(Integer code, String mean) {
        this.code = code;
        this.mean = mean;
    }

    public static CitizenValidatingTypeEn toEnum(Integer code) {
        CitizenValidatingTypeEn[] values = values();
        for (CitizenValidatingTypeEn en : values) {
            if (en.getCode().equals(code)) {
                return en;
            }
        }
        return unknow;
    }

    public Integer getCode() {
        return code;
    }

    public String getMean() {
        return mean;
    }

    public static List<EnumDTO> getList() {
        List<EnumDTO> list = new ArrayList<>();
        for (int k = 0; k < values().length; k++) {
            list.add(new EnumDTO(values()[k].getCode(), values()[k].getMean(), ""));
        }
        return list;
    }

}
